package com.tsj.model.auto.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * @author taoshujian
 * @version 1.0
 * @since 2025-09-27 00:05:40
 */
@Data
public class BaseEntity {

    /**
     * 主键
     * <p>
     * GeneratedValue(strategy = GenerationType.IDENTITY)
     * 这是 JPA 标准注解， 会强制让数据库负责 ID 生成，与雪花算法的客户端生成逻辑冲突
     * 对应 websiteRepository.save(entity)
     * <p>
     * TableId(type = IdType.ASSIGN_ID)
     * 是MyBatis-Plus注解，使用雪花算法生成主键
     *
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /** 是否删除 0：正常，1：删除 */
    @TableField("del_flag")
    private Boolean delFlag;

    /** 创建时间 */
    @TableField("time_create")
    private java.time.LocalDateTime timeCreate;

    /** 更新时间 */
    @TableField("time_modified")
    private java.time.LocalDateTime timeModified;

    /** 创建人 */
    @TableField("created_user_id")
    private Long createdUserId;

    /** 更新人 */
    @TableField("modified_user_id")
    private Long modifiedUserId;

    /**
     * 初始化方法，设置默认值
     */
    public void init() {
        this.delFlag = false; // 默认未删除
        this.timeCreate = LocalDateTime.now();
        this.timeModified = LocalDateTime.now();
    }

    /**
     * 更新时调用，更新修改时间
     */
    public void update() {
        this.timeModified = LocalDateTime.now();
    }
}
